/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Common;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 *
 * @author Mario,Thomas,Max,Martin,Sergio
 */
public interface IGameServer extends Remote {

    /**
     * Konstante für die Mindestanzahl von Spielern für ein Spiel
     */
    public Integer MinClientsOnGame = 2;

    /**
     * Konstante für die Maximalanzahl von Spielern für ein Spiel
     */
    public Integer MaxClientsOnGame = 4;

    /*Die Maximalen Verbidnungsversuche bis ein Client als tot gilt.     */
    public Integer MAX_SENDTRIES = 5;

    /* Die Wartezeit in ms. bis man wieder einen Versuch startet die anderen Clients zu erreiche.     */
    public Integer WAIT_PERIOD = 3000;
    
    /**
     * Startet das Spiel sofort sofern genug SPieler
     * @return
     * @throws RemoteException
     */
    public void startGameNow(IClient client) throws RemoteException, ImNotMasterServerException, PlayernameAlreadyAssigned;

    /**
     * Registriert den Client für das SPiel.
     * @param client
     * @throws RemoteException
     * @throws IImNotMasterServerException
     */
    public void registerClient(IClient client) throws 	RemoteException, ImNotMasterServerException, PlayernameAlreadyAssigned;

    /**
     * De-registriert den Client für das SPiel.
     * @param client
     * @throws RemoteException
     * @throws IImNotMasterServerException
     */
    public void unregisterClient(IClient client) throws RemoteException, ImNotMasterServerException;
}
